package com.robert.demo.service.impl;

import com.robert.common.commonutil.bean.vo.ResultData;
import com.robert.demo.common.service.IResultValidator;
import com.robert.demo.entity.OptLogInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * LogResultValidator:
 *
 * @author zhaoshengtao
 * @date 2024/03/20
 */
@Service("logResultValidator")
@Slf4j
public class LogResultValidator implements IResultValidator {
    /**
     * 日志查询鉴权逻辑
     * @param result  原接口返回的结果
     * @param userId 当前用户ID
     */
    @Override
    public boolean execute(Object result, Integer userId) {
        // 结果类型校验
        if(result instanceof ResultData data){
            // 以下代码为模拟鉴权逻辑处理代码
            // 如果接口响应结果异常，直接返回
            if(!data.isSuccess()){
                return true;
            }
            // 转换数据，获取到返回的数据列表或者单条数据
            ArrayList<OptLogInfo> list = (ArrayList<OptLogInfo>)data.get("data");
            // 模拟逻辑处理
            for (OptLogInfo optLogInfo : list) {
                log.info("id={}", optLogInfo.getId());
                if(optLogInfo.getId() == 2){
                    return false;
                }
            }
            return true;
        }
        return false;
    }

}
